/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package com.comeval.vista;

import com.comeval.logica.LogicaLaboratorioLocal;
import com.comeval.modelo.Laboratorio;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.ejb.EJB;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.context.FacesContext;
import org.primefaces.component.commandbutton.CommandButton;
import org.primefaces.component.inputtext.InputText;
import org.primefaces.component.selectonemenu.SelectOneMenu;
import org.primefaces.event.SelectEvent;

/**
 *
 * @author LUISA
 */
@ManagedBean(name = "laboratorioVista")
@RequestScoped
public class LaboratorioVista {

    @EJB
    private LogicaLaboratorioLocal laboratorioLogica;

    private InputText txtNitLaboratorio;
    private InputText txtNombreLaboratorio;
    private InputText txtUbicacionLaboratorio;
    private InputText txtTelefonoLaboratorio;
    private InputText txtCorreoLaboratorio;

    private CommandButton btnRegistrar;
    private CommandButton btnModificar;
    private CommandButton btnEliminar;
    private CommandButton btnLimpiar;

    private List<Laboratorio> listaLaboratorio;
    private Laboratorio selectedLaboratorio;

    /**
     * Creates a new instance of LaboratorioVista
     */
    public LaboratorioVista() {
    }

    public LogicaLaboratorioLocal getLaboratorioLogica() {
        return laboratorioLogica;
    }

    public void setLaboratorioLogica(LogicaLaboratorioLocal laboratorioLogica) {
        this.laboratorioLogica = laboratorioLogica;
    }

    public InputText getTxtNitLaboratorio() {
        return txtNitLaboratorio;
    }

    public void setTxtNitLaboratorio(InputText txtNitLaboratorio) {
        this.txtNitLaboratorio = txtNitLaboratorio;
    }

    public InputText getTxtNombreLaboratorio() {
        return txtNombreLaboratorio;
    }

    public void setTxtNombreLaboratorio(InputText txtNombreLaboratorio) {
        this.txtNombreLaboratorio = txtNombreLaboratorio;
    }

    public InputText getTxtUbicacionLaboratorio() {
        return txtUbicacionLaboratorio;
    }

    public void setTxtUbicacionLaboratorio(InputText txtUbicacionLaboratorio) {
        this.txtUbicacionLaboratorio = txtUbicacionLaboratorio;
    }

    public InputText getTxtTelefonoLaboratorio() {
        return txtTelefonoLaboratorio;
    }

    public void setTxtTelefonoLaboratorio(InputText txtTelefonoLaboratorio) {
        this.txtTelefonoLaboratorio = txtTelefonoLaboratorio;
    }

    public InputText getTxtCorreoLaboratorio() {
        return txtCorreoLaboratorio;
    }

    public void setTxtCorreoLaboratorio(InputText txtCorreoLaboratorio) {
        this.txtCorreoLaboratorio = txtCorreoLaboratorio;
    }

    public CommandButton getBtnRegistrar() {
        return btnRegistrar;
    }

    public void setBtnRegistrar(CommandButton btnRegistrar) {
        this.btnRegistrar = btnRegistrar;
    }

    public CommandButton getBtnModificar() {
        return btnModificar;
    }

    public void setBtnModificar(CommandButton btnModificar) {
        this.btnModificar = btnModificar;
    }

    public CommandButton getBtnEliminar() {
        return btnEliminar;
    }

    public void setBtnEliminar(CommandButton btnEliminar) {
        this.btnEliminar = btnEliminar;
    }

    public CommandButton getBtnLimpiar() {
        return btnLimpiar;
    }

    public void setBtnLimpiar(CommandButton btnLimpiar) {
        this.btnLimpiar = btnLimpiar;
    }

    public List<Laboratorio> getListaLaboratorio() {
        if (listaLaboratorio == null) {
            try {
                listaLaboratorio = laboratorioLogica.consultar();
            } catch (Exception ex) {
                Logger.getLogger(LaboratorioVista.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
        return listaLaboratorio;
    }

    public void setListaLaboratorio(List<Laboratorio> listaLaboratorio) {
        this.listaLaboratorio = listaLaboratorio;
    }

    public Laboratorio getSelectedLaboratorio() {
        return selectedLaboratorio;
    }

    public void setSelectedLaboratorio(Laboratorio selectedLaboratorio) {
        this.selectedLaboratorio = selectedLaboratorio;
    }

    public void funcion_limpiar() {
        txtNitLaboratorio.setValue("");
        txtNombreLaboratorio.setValue("");
        txtUbicacionLaboratorio.setValue("");
        txtTelefonoLaboratorio.setValue("");
        txtCorreoLaboratorio.setValue("");

        txtNitLaboratorio.setDisabled(false);
        btnRegistrar.setDisabled(false);
        btnModificar.setDisabled(true);
        btnEliminar.setDisabled(true);
    }

    public void funcion_registrar() {
        Laboratorio lab = new Laboratorio();
        if (txtNitLaboratorio.getValue().equals("") || txtNombreLaboratorio.getValue().equals("") || txtUbicacionLaboratorio.getValue().equals("") || txtTelefonoLaboratorio.getValue().equals("") || txtCorreoLaboratorio.getValue().equals("")) {
            FacesContext.getCurrentInstance().addMessage("mensaje", new FacesMessage(FacesMessage.SEVERITY_ERROR, "ERROR", "Campos vacíos"));
        } else {
            try {
                lab.setNitlaboratorio(txtNitLaboratorio.getValue().toString());
                lab.setNombrelaboratorio(txtNombreLaboratorio.getValue().toString());
                lab.setUbicacionlaboratorio(txtUbicacionLaboratorio.getValue().toString());
                lab.setTelefonolaboratorio(Integer.parseInt(txtTelefonoLaboratorio.getValue().toString()));
                lab.setCorreolaboratorio(txtCorreoLaboratorio.getValue().toString());
                laboratorioLogica.registrar(lab);
                FacesContext.getCurrentInstance().addMessage("mensaje", new FacesMessage(FacesMessage.SEVERITY_INFO, "Información", "El docente se registró con éxito"));
            } catch (Exception ex) {
                FacesContext.getCurrentInstance().addMessage("mensaje", new FacesMessage(FacesMessage.SEVERITY_ERROR, "ERROR", ex.getMessage()));
                Logger.getLogger(LaboratorioVista.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
        listaLaboratorio = null;
        funcion_limpiar();
        btnModificar.setDisabled(true);
        btnEliminar.setDisabled(true);
    }

    public void funcion_modificar() {
        try {
            Laboratorio lab = new Laboratorio();
            lab.setNitlaboratorio(txtNitLaboratorio.getValue().toString());
            lab.setNombrelaboratorio(txtNombreLaboratorio.getValue().toString());
            lab.setUbicacionlaboratorio(txtUbicacionLaboratorio.getValue().toString());
            lab.setTelefonolaboratorio(Integer.parseInt(txtTelefonoLaboratorio.getValue().toString()));
            lab.setCorreolaboratorio(txtCorreoLaboratorio.getValue().toString());
            laboratorioLogica.modificar(lab);
            FacesContext.getCurrentInstance().addMessage("mensaje", new FacesMessage(FacesMessage.SEVERITY_INFO, "Información", "El docente se registró con éxito"));
        } catch (Exception ex) {
            FacesContext.getCurrentInstance().addMessage("mensaje", new FacesMessage(FacesMessage.SEVERITY_ERROR, "ERROR", ex.getMessage()));
            Logger.getLogger(LaboratorioVista.class.getName()).log(Level.SEVERE, null, ex);
        }
        listaLaboratorio = null;
        funcion_limpiar();
    }

    public void funcion_eliminar() {
        try {
            Laboratorio lab = new Laboratorio();
            lab.setNitlaboratorio(txtNitLaboratorio.getValue().toString());
            laboratorioLogica.eliminar(lab);
            FacesContext.getCurrentInstance().addMessage("mensaje", new FacesMessage(FacesMessage.SEVERITY_INFO, "Información", "El docente se eliminó con éxito"));
        } catch (Exception ex) {
            FacesContext.getCurrentInstance().addMessage("mensaje", new FacesMessage(FacesMessage.SEVERITY_ERROR, "ERROR", ex.getMessage()));
            Logger.getLogger(LaboratorioVista.class.getName()).log(Level.SEVERE, null, ex);
        }
        listaLaboratorio = null;
        funcion_limpiar();
    }

    public void funcion_seleccionar(SelectEvent event) {
        Laboratorio labSeleccionado = (Laboratorio) event.getObject();
        txtNitLaboratorio.setValue(labSeleccionado.getNitlaboratorio());
        txtNombreLaboratorio.setValue(labSeleccionado.getNombrelaboratorio());
        txtUbicacionLaboratorio.setValue(labSeleccionado.getUbicacionlaboratorio());
        txtTelefonoLaboratorio.setValue(labSeleccionado.getTelefonolaboratorio());
        txtCorreoLaboratorio.setValue(labSeleccionado.getCorreolaboratorio());

        txtNitLaboratorio.setDisabled(true);
        btnRegistrar.setDisabled(true);
        btnModificar.setDisabled(false);
        btnEliminar.setDisabled(false);
    }

}
